package com.gf.framework.web.translate;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author gaofei
 */
public interface Translatable<INPUT, OUTPUT> {

    /**
     * 翻译
     * @param source 原属性
     * @param datasource 原数据类型
     * @param param 参数
     * @return 输出的属性
     */
    OUTPUT translate(INPUT source, Class<?> datasource, String param);

    /**
     * 批量翻译
     * @param source 原属性数据
     * @param datasource 原数据类型
     * @param param 参数
     * @return 输出的属性列表
     */
    default List<OUTPUT> translateList(List<INPUT> source, Class<?> datasource, String param) {
        return source.stream().map(input -> translate(input, datasource, param)).collect(Collectors.toList());
    }
}
